<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>C语言基础 - 变量与常量</title>
    <link rel="stylesheet" href="common2.css">
    <style>
        /* 页面特有样式 */
        .declaration-example {
            background-color: #f5f5f5;
            border-left: 4px solid #4CAF50;
            padding: 15px;
            margin: 15px 0;
        }
        
        .comparison-table {
            width: 100%;
            margin: 20px 0;
            border-collapse: collapse;
        }
        
        .naming-rules {
            background-color: #e8f5e9;
            padding: 15px;
            border-radius: 5px;
        }
        
        .best-practice {
            background-color: #e3f2fd;
            padding: 15px;
            border-left: 4px solid #2196F3;
            margin: 15px 0;
        }
    </style>
</head>
<body>
    <div class="container">
        <header>
            <h1>C语言基础入门课程</h1>
        </header>
        
        <nav>
            <a href="index.html">首页</a>
            <a href="02-intro.html">C语言简介与环境搭建</a>
            <a href="03-structure.html" class="current">C程序结构</a>
            <a href="04-datatypes.html">基本数据类型</a>
            <a href="05-variables.html">变量与常量</a>
            <a href="06-operators.html">运算符</a>
            <a href="07-io.html" class="current">输入输出</a>
            <a href="08-conditionals.html">条件语句</a>
            <a href="09-loops.html">循环结构</a>
            <a href="10-functions.html" class="current">函数基础</a>
            <a href="11-scope.html">作用域与存储类</a>
            <a href="12-recursion.html">递归函数</a>
            <a href="13-arrays.html">一维数组</a>
            <a href="14-multidim.html" class="current">多维数组</a>
            <a href="15-strings.html">字符串处理</a>
            <a href="16-pointers.html">指针基础</a>
            <a href="17-pointers_advanced.html" class="current">指针进阶</a>
            <a href="18-structs.html">结构体</a>
            <a href="19-files.html">文件操作</a>
            <a href="20-project.html">综合项目</a>
        </nav>
        
        <main>
            <h2>变量与常量</h2>
            
            <section>
                <h3>变量声明与初始化</h3>
                
                <div class="declaration-example">
                    <h4>变量声明语法</h4>
                    <pre><code>数据类型 变量名;          // 声明
数据类型 变量名 = 初始值; // 声明并初始化</code></pre>
                    
                    <h4>示例</h4>
                    <pre><code>int age;                // 声明整型变量
float height = 1.75f;   // 声明并初始化浮点变量
char grade = 'A';       // 声明并初始化字符变量</code></pre>
                </div>
                
                <div class="best-practice">
                    <h4>最佳实践</h4>
                    <ul>
                        <li>尽量在声明时初始化变量</li>
                        <li>避免使用未初始化的变量</li>
                        <li>局部变量应在使用前声明</li>
                    </ul>
                </div>
            </section>
            
            <section>
                <h3>常量定义</h3>
                
                <h4>1. const关键字</h4>
                <pre><code>const 数据类型 常量名 = 值;</code></pre>
                <p>示例：</p>
                <pre><code>const float PI = 3.14159f;
const int MAX_SIZE = 100;</code></pre>
                <p>特点：</p>
                <ul>
                    <li>类型安全，有作用域限制</li>
                    <li>在编译时确定值</li>
                    <li>不能通过指针修改</li>
                </ul>
                
                <h4>2. #define预处理指令</h4>
                <pre><code>#define 常量名 值</code></pre>
                <p>示例：</p>
                <pre><code>#define PI 3.14159
#define MAX_SIZE 100</code></pre>
                <p>特点：</p>
                <ul>
                    <li>无类型，简单的文本替换</li>
                    <li>在预处理阶段处理</li>
                    <li>作用域从定义处到文件结束</li>
                </ul>
                
                <table class="comparison-table">
                    <tr>
                        <th>比较项</th>
                        <th>const</th>
                        <th>#define</th>
                    </tr>
                    <tr>
                        <td>类型检查</td>
                        <td>有</td>
                        <td>无</td>
                    </tr>
                    <tr>
                        <td>调试可见</td>
                        <td>是</td>
                        <td>否</td>
                    </tr>
                    <tr>
                        <td>内存分配</td>
                        <td>是</td>
                        <td>否</td>
                    </tr>
                    <tr>
                        <td>作用域</td>
                        <td>块作用域</td>
                        <td>文件作用域</td>
                    </tr>
                </table>
                
                <div class="best-practice">
                    <h4>使用建议</h4>
                    <ul>
                        <li>C++中优先使用const，C中根据情况选择</li>
                        <li>宏常量适合定义不依赖类型的简单常量</li>
                        <li>const更适合有类型要求的常量</li>
                    </ul>
                </div>
            </section>
            
            <section>
                <h3>命名规范</h3>
                
                <div class="naming-rules">
                    <h4>基本规则</h4>
                    <ul>
                        <li>只能包含字母、数字和下划线</li>
                        <li>不能以数字开头</li>
                        <li>区分大小写</li>
                        <li>不能使用C语言关键字</li>
                    </ul>
                    
                    <h4>常见命名风格</h4>
                    <pre><code>int student_count;      // 小写+下划线(snake_case)
int studentCount;      // 小驼峰(lowerCamelCase)
const int MAX_SIZE;    // 常量全大写+下划线</code></pre>
                    
                    <h4>命名建议</h4>
                    <ul>
                        <li>使用有意义的名称</li>
                        <li>避免单个字符的名称(循环变量除外)</li>
                        <li>保持一致性</li>
                        <li>宏定义全大写</li>
                        <li>变量和函数名小写</li>
                    </ul>
                </div>
                
                <div class="best-practice">
                    <h4>好的命名示例</h4>
                    <pre><code>int user_age;           // 用户年龄
float account_balance; // 账户余额
const int MAX_USERS = 100; // 最大用户数
void calculate_average();  // 计算平均值函数</code></pre>
                    
                    <h4>应避免的命名</h4>
                    <pre><code>int a, b, c;           // 无意义
int foo, bar;          // 无明确含义
int int;               // 使用关键字</code></pre>
                </div>
            </section>
        </main>
        

        
        <!-- 二维码区域 -->

    </div> <!-- 结束.container -->
</body>
</html>